#pragma once

#include <d3dx9.h>


struct AABoundingBox;

class IMovable
{
public:
   virtual ~IMovable(void) {}

   virtual void move(const D3DXVECTOR3& transVec) = 0;

   virtual void rotate(float pitch, float yaw, float roll) = 0;

   virtual const D3DXVECTOR3& getRightVec() const = 0;
   virtual const D3DXVECTOR3& getUpVec() const = 0;
   virtual const D3DXVECTOR3& getLookVec() const = 0;
   virtual const D3DXVECTOR3& getPosition() const = 0;

   virtual void update(float timeElapsed) {}

   virtual AABoundingBox getWorldSpaceBoundingBox() const = 0;
};
